package manager;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;

import javax.swing.JTextArea;

import GUI.PNEGUI;

/**
 * Cette classe permet de rediriger la sortie standard vers un fichier log et vers l'interface graphique.
 * Ceci est notamment utile pour l'utilisation de CPlex.
 * 
 * @author BERNARD Arthur, DELAMARCHE Jérôme, PAVAGEAU Max
 *
 */
public class RedirectionSortie extends OutputStream {
	/**
	 * L'interface graphique vers laquelle sera redirigée la sortie.
	 */
	private PNEGUI sortieInterface = null;
	
	/**
	 * Le fichier vers lequel sera redirigée la sortie.
	 */
	private PrintWriter sortieLog = null;

	/**
	 * Constructeur permettant de définir les deux redirections.
	 * 
	 * @param sortieInterface L'interface graphique vers laquelle on souhaite faire la redirection.
	 * @param sortieLog Le fichier log vers lequel on souhaite faire la redirection.
	 */
	public RedirectionSortie(PNEGUI sortieInterface, PrintWriter sortieLog) {
		this.sortieInterface = sortieInterface;
		this.sortieLog = sortieLog;
		
		System.setOut(new PrintStream(this)); //Redirection de la sortie standard.
	}
	
	/**
	 * Redéfinition de la méthode de OutputStream.
	 * 
	 * @param carac Le caractère (entier) à écrire.
	 */
	public void write(int carac) throws IOException {
		if(sortieInterface != null)
			sortieInterface.printOut(String.valueOf((char)carac));
		if(sortieLog != null)
			sortieLog.write((char)carac);
	}

}
